package cn.tedu.bonfire.front.account.service;

import cn.tedu.bonfire.common.consts.data.CommonConsts;
import cn.tedu.bonfire.common.pojo.authentication.CurrentPrincipal;
import cn.tedu.bonfire.common.pojo.vo.PageData;
import cn.tedu.bonfire.front.account.pojo.param.UserAddNewParam;
import cn.tedu.bonfire.front.account.pojo.param.UserUpdateInfoParam;
import cn.tedu.bonfire.front.account.pojo.vo.UserListItemVO;
import cn.tedu.bonfire.front.account.pojo.vo.UserStandardVO;

public interface IUserService extends CommonConsts {
    /**
     * 修改基本信息
     *
     * @param currentPrincipal     当事人
     * @param userUpdateInfoParam 新的基本信息
     */
    void updateInfo(CurrentPrincipal currentPrincipal, UserUpdateInfoParam userUpdateInfoParam);

    /**
     * 修改密码
     *
     * @param userId      用户ID
     * @param newPassword 新密码
     */
    void updatePassword(Long userId, String newPassword);

    /**
     * 修改头像
     *
     * @param userId 用户ID
     * @param avatar 新头像的URL
     */
    void updateAvatar(Long userId, String avatar);

    /**
     * 修改手机号码
     *
     * @param userId 用户ID
     * @param phone  新手机号码
     */
    void updatePhone(Long userId, String phone);

    /**
     * 修改电子邮箱
     *
     * @param userId 用户ID
     * @param email  新电子邮箱
     */
    void updateEmail(Long userId, String email);

    /**
     * 启用用户
     *
     * @param userId 用户ID
     */
    void setEnable(Long userId);

    /**
     * 禁用用户
     *
     * @param userId 用户ID
     */
    void setDisable(Long userId);

    /**
     * 根据ID查询用户
     *
     * @param userId 用户ID
     * @return 匹配的用户信息
     */
    UserStandardVO getStandardById(Long userId);

    /**
     * 查询用户列表，将使用默认的每页记录数
     *
     * @param pageNum 页码
     * @return 用户列表
     */
    PageData<UserListItemVO> list(Integer pageNum);

    /**
     * 查询用户列表
     *
     * @param pageNum  页码
     * @param pageSize 每页记录数
     * @return 用户列表
     */
    PageData<UserListItemVO> list(Integer pageNum, Integer pageSize);
    Long getGmtModified(Long userId);
}
